// 用户修改
const { User } = require("../../models/user");
const bcrypt = require("bcrypt");
module.exports = async function (req, res, next) {
  // 获取user _id
  const { id } = req.query;
  // 获取修改提交的数据
  const body = req.body;

  // 根据id查询user
  let user = await User.findOne({ _id: id });
  
  // 这里需要对用户提交的数据做规则校验

  // 密码比对
  let isPass = await bcrypt.compare(body.password, user.password);
  if (isPass) {
    // 比对成功
    // res.send('密码比对成功')
    // 将用户信息更新到数据库中, 根据_id先查找，然后更新body覆盖数据库中的数据
    await User.updateOne({_id: id}, {
        username: body.username,
        email: body.email,
        role: body.role,
        state: body.state
    });
    
    // 重定向至用户列表页面
    res.redirect("/admin/user");
  } else {
    // 比对失败
    // 触发错误处理中间件
    let obj = {
      path: "/admin/user-edit",
      message: "密码比对失败，不能进行用户信息的修改",
      id: id,
    };
    next(JSON.stringify(obj));
  }
};
